This invention relates to a programmable controller and its units, as well as a method of processing a user program.
As is well known, programmable controllers (PLCs) used in factory automation (FA) carry out controls by inputting ON/OFF data from input devices such as switches and sensors, carrying out logical operations according a sequence program (user program) written, say, in the ladder language, and outputting signals on such ON/OFF data according to the results of such operations to output devices such as relays, valves and actuators. Dedicated tools are used when a user program is created or edited, written into (or downloaded to) a specified area of a PLC or read out (or uploaded) from a specified memory device.
Such a PLC may be formed by preparing a plurality of units each for a different function and connecting them electrically and mechanically. Examples of such units that form such a PLC include a power source unit for supplying electric power to each unit of the PLC, a CPU unit that carries out a user program stored in a program memory on the basis of input signals inputted by IN refresh, and an I/O unit that can communicate with the CPU unit through a bus and is connected to an input device or an output device.
Some recently developed I/O units have a CPU (or a MPU) and a program memory installed and desired user programs stored in such a program memory, adapted to carry out an intended control by having the user program carried out also on the side of the I/O unit.
Let us now consider the commercial flow route of PLCs and their individual units. Firstly, there are the makers that produce the PLCs. Producers of various industrial machines such as automatic packaging machines and injection molders buy PLCs from such a maker and have needed user programs created for the purposes of their industrial machines and their controls by means of program-creating tools. The user programs thus created are downloaded to the PLC and the industrial machine controlled by such a PLC is produced. In other words, the producer of such an industrial machine is a user (or an intermediate user) from the point of view of the maker of the PLC. Such an industrial machine may be installed in the factory of an end user as a part of a production system to produce products of various kinds.
Such user programs incorporate the know-how of individual intermediate users and hence are their important intellectual properties. Thus, each intermediate user has a strong desire to prevent as much as possible the contents of its user programs from becoming known to his/her business competitors. If a user program is created by using a multi-purpose language such as the ladder language to describe sequence programs and is stored in a program memory, it is possible to use a tool to read out and analyze such a user program. It is often the case that several intermediate users are in a business relationship with a single end user and in such a situation, the factory of the end user may be freely accessible to each of the intermediate users. Thus, after an industrial machine controlled by a PLC is installed, a competing intermediate user different from the one who produced and delivered this machine may visit the site and upload the user program of its PLC.
In view of this possibility, a pass word may be incorporated so as to protect the program from being read out but if the pass word becomes known or if the program has been analyzed, the user program becomes available to any third party. When a pass word is used to protect the user program, there are both methods of read-protecting the entire program and methods of read-protecting only a selected portion of the program (partial protection). The intermediate user may choose to protect only the portion of the user program containing the know-how and sell such a partially protected product to the end user so as to prevent the dissemination of the know-know to be protected but to allow the other parts to be freely modified (customize) by the end user. This method, however, has the problem that the protected portion may be easily affected when an unprotected portion is edited since the protected portion is a part of the single user program.
If a dedicated microcomputer board is used for the control portion (such as for the control of motion) including the know-how, its leakage to a third party can be inhibited but there remains the cumbersome problem of preparing a dedicated component such as a microcomputer board. Since microcomputer boards cannot accommodate the ladder language or the sequence program language, the environment (including tools) for the development for user programs by the ladder language used by the PLC cannot be employed, and a dedicated environment becomes necessary for developing programs on the microcomputer board. This leads to the problem of an increased cost.
If the user cannot prepare a dedicated development environment or avail himself/herself of a developer for creating a program microcomputer board by means of a dedicated development environment, cooperation from another maker such as a maker of PLCs becomes necessary. In particular, when a user requests a maker of PLCs to create a program corresponding to a user program, the maker of PLCs can offer such a program by incorporating it in a system program (firmware) for the unit as a dedicated unit for the specified user. This method is desirable for the purpose of protection but the know-how to be protected must be disclosed to the program maker and it is not always easy for the program maker to fully understand the know-how even if it is carefully disclosed. So, the control and the functions desired by the user may not be fully realized by the created program, and the user may not find it possible to correct the program in a simple manner.